我們花了兩天介紹了主題相關的內容,一些知識點只是點到即止,更多的內容還是得大家自己去理解。今天我們介紹 NG-ZORRO 中一個獨立的模組單元:實驗性功能
。這部分的元件是我們在開發過程中發現的比較常用但是 Ant Design 並沒有提供的,對於一些後臺場景業務十分有效。
這些屬效能夠實現:
首先引入 NzResizableModule
,在 styles.less
匯入 @import "../node_modules/ng-zorro-antd/resizable/style/entry";
樣式。
然後在頁面上即可使用:
<div
class="box"
nz-resizable
[nzMaxWidth]="600"
[nzMinWidth]="80"
[nzMaxHeight]="200"
[nzMinHeight]="80"
[style.height.px]="height"
[style.width.px]="width"
(nzResize)="onResize($event)"
>
<nz-resize-handle nzDirection="right">
<div class="right-wrap">
<i class="right" nz-icon nzType="more" nzTheme="outline"></i>
</div>
</nz-resize-handle>
content
</div>
響應事件:
width = 400;
height = 200;
id = -1;
onResize({ width, height }: { width: number; height: number }): void {
cancelAnimationFrame(this.id);
this.id = requestAnimationFrame(() => {
this.width = width;
this.height = height;
});
}
每次調整之後將新的寬度和高度設定到 div
上,這樣我們就可以隨意調整 div
大小了。
既然我們可以將其應用到 html
元素上,自然也能和 NG-ZORRO 的元件結合使用,我們來改造一下我們的左側選單,讓它能夠實現拖拽調整寬度。
<nz-layout>
<nz-sider
nzCollapsible
[(nzCollapsed)]="collapsed"
[nzWidth]="width"
[nzTrigger]="triggerTpl"
[nzTheme]="theme"
<!--新增 resize 元件-->
nz-resizable
[nzMaxWidth]="400"
[nzMinWidth]="200"
(nzResize)="onSideResize($event)">
<!--handle-->
<nz-resize-handle nzDirection="right">
<div class="sider-resize-line"></div>
</nz-resize-handle>
<!--content-->
<div class="logo"></div>
...
</nz-sider>
</nz-layout>
這樣我們和上面一樣,滑鼠移動到選單邊欄拖拽後重新設定 nz-sider
的寬度,實現自定義寬度。
元件樣式只包含了必要的位置屬性和簡單的樣式,當然,你對官方的樣式不滿意的話,文件中也給我們提供了 複寫 css 的規則 名稱的方法,不過常規情況下目前的屬性樣式也滿足我們的使用需求。
實際上,Resizable
元件可以和很多已有元件共同使用,包括 Table
、Drawer
、Layout
等等,在一些特定的業務場景中能省下我們很多精力。
還有更多的元件在合併過程中,可以參考這個 Issue 追蹤有哪些新元件提供。